<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from fw.tnf on 19 December 2010 -->

<TITLE>FunnelWeb - Producing Documentation</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>FunnelWeb</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_2.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_4.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC12" HREF="fw_toc.html#SEC12">Producing Documentation</A></H1>
<P>
<H2><A NAME="SEC13" HREF="fw_toc.html#SEC13">Specifying the Typesetter</A></H2>
<A NAME="IDX41"></A>
<P>
One of the design goals of FunnelWeb was to provide a <EM>typesetter</EM>
independent literate programming system.  By this is meant that it be
possible to create FunnelWeb input files that do not contain
typesetter-specific commands.
<P>
The difficulty with providing typesetter-independent typesetting is that
each desired typesetting feature must be recreated in a
typesetter-independent FunnelWeb typesetting construct that FunnelWeb
can translate into whatever typesetting language is being targeted by
Weave.  Taken to the extreme, this would result in FunnelWeb providing
the full syntactic and semantic power of TeX, but with a more
generic, FunnelWeb-specific syntax.  This was unfeasible in the time
available, and undesirable as well.
<P>
The compromise struck in the FunnelWeb design is to provide a set of
primitive typesetter-independent typesetting features that are implemented
<A NAME="IDX42"></A>
by FunnelWeb.  These are the <DFN>typesetter directives</DFN>.
If the user is prepared to restrict to these directives, then the user's
FunnelWeb document will be both target-language and typesetter
independent.  However, if the user wishes to use the more sophisticated
features of the target typesetting system, the user can specify the
typesetter in a <CODE>typesetter</CODE> pragma and then place typesetter
commands in the free text of the FunnelWeb document where they will be
passed verbatim to the documentation file.  The choice of the trade-off
between typesetter independence and typesetting power is left to the
user.
<P>
The <CODE>typesetter</CODE> pragma allows the user to specify whether the
input file is supposed to be typesetter-independent, or whether it
contains commands in a particular typesetter language.  The pragma has
the following syntax.
<P>
<PRE>
<VAR>pragma_typesetter</VAR> ::= 
   <VAR>ps</VAR> <SAMP>`typesetter'</SAMP> <VAR>s</VAR> <SAMP>`='</SAMP> <VAR>s</VAR>
     (<SAMP>`none'</SAMP> / <SAMP>`tex'</SAMP> / <SAMP>`latex'</SAMP> / <SAMP>`html'</SAMP> / <SAMP>`texinfo'</SAMP> /
      <SAMP>`latex2html'</SAMP>).

<VAR>s</VAR> ::= {<SAMP>` '</SAMP>}+ .

<VAR>ps</VAR> ::= (<SAMP>`@p'</SAMP> / <SAMP>`@P'</SAMP>) <SAMP>` '</SAMP> .
</PRE>
<P>
The six forms of the pragma look like this.
<P>
<PRE>
@p typesetter = none
@p typesetter = tex
@p typesetter = latex
@p typesetter = html
@p typesetter = texinfo
@p typesetter = latex2html
</PRE>
<P>
A source file can contain more than one typesetter pragma, but they must
all specify the same value.
The default is <CODE>none</CODE>, in which case FunnelWeb assumes that the
documentation file is to be typeset with TeX but that the user has not
included any explicit TeX markup.
If the typesetter setting is not <CODE>none</CODE>, FunnelWeb assumes that the
free text may contain explicit markup for the specified typesetter.
<P>
The typesetter setting affects three things:
<P>
<DL COMPACT>
<DT>Handling of free text
<DD>If the typesetter setting is not <CODE>none</CODE>, FunnelWeb writes the free text
<EM>directly</EM> to the documentation file without changing it in any way.
This means that if (say) <CODE>\centerline</CODE> appears in the
input file, it will copied directly to the documentation file.  If the
typesetter is <CODE>none</CODE>, Weave intercepts any characters or sequences
that might have a special meaning to TeX and replaces
them with TeX commands to typeset the sequences so that they will
appear as they do in the input.
For example, if <CODE>$</CODE> (the TeX mathematics mode character)
appears in the input file, it will be
be written to the documentation file as <CODE>\$</CODE>.
<P>
<DT>Handling of macro text
<DD>Text within macros and literal strings always appears in the documentation
exactly as it does in the FunnelWeb source.
Weave intercepts any characters or sequences that might have a special
meaning to the specified typesetter and replaces them with commands to
typeset that material as it appears in the input.
<P>
<DT>Boilerplate
<DD>If the typesetter setting is <CODE>none</CODE> or <CODE>tex</CODE>, the documentation
file will begin with a collection of TeX macros implementing FunnelWeb
constructs and commands to protect TeX markup.
A FunnelWeb file using either of these settings need have no explicit
markup whatsoever.
No such boilerplate is included for any other typesetter settings.
Thus any markup required by the specified typesetter must appear
explicitly in the FunnelWeb file.
(For example, if the typesetter setting is <CODE>latex</CODE> then the FunnelWeb
file must contain an explicit <CODE>\documentclass</CODE> command.)
</DL>
<P>
<H2><A NAME="SEC14" HREF="fw_toc.html#SEC14">Typesetting Documentation with Eli</A></H2>
<P>
Within the Eli-Implementation of FunnelWeb, the usage of a
typesetter-directive is a precondition for the generation of a
documentation in the same format. 
<P>
<DL COMPACT>
<DT><CODE>@p typesetter = none</CODE>
<DD><DT><CODE>@p typesetter = tex</CODE>
<DD><DT><CODE>@p typesetter = latex</CODE>
<DD><DT><CODE>@p typesetter = latex2html</CODE>
<DD>When these or no typesetter-directive is used, the derivation
<CODE>:fwTex</CODE> can be used to obtain a <TT>`.tex'</TT>-type file. A file of
this type can be converted into a <TT>`.dvi'</TT>-file by application of the
<CODE>:dvi</CODE>-derivation or into a <TT>`.ps'</TT>-file by application of the
<CODE>:ps</CODE>-derivation. Of course you need a TeX implementation to
use these derivations.
<P>
The user must supply an appropriate LaTeX preamble,
<CODE>\begin{document}</CODE> and <CODE>\end{document}</CODE> as part of
the document text when using either <CODE>latex</CODE> or <CODE>latex2html</CODE>.
This means that it is possible to combine the outputs from several
<CODE>:fwTex</CODE> derivations into a single document by using appropriate
LaTeX <CODE>\input</CODE> commands.
<P>
The preamble must include the LaTeX command <CODE>\usepackage{alltt}</CODE>
for either <CODE>latex</CODE> or <CODE>latex2html</CODE>,
and <CODE>latex2html</CODE> also requires <CODE>\usepackage{html}</CODE>.
<P>
Pragmas <CODE>latex</CODE> and <CODE>latex2html</CODE> normally translate the FunnelWeb
section directives into LaTeX sectioning commands as follows:
<P>
<UL>
<DT><CODE></CODE>
<DD><CODE>@A</CODE> <CODE>\section</CODE>
<DT><CODE></CODE>
<DD><CODE>@B</CODE> <CODE>\subsection</CODE>
<DT><CODE></CODE>
<DD><CODE>@C</CODE> <CODE>\subsubsection</CODE>
<DT><CODE></CODE>
<DD><CODE>@D</CODE> <CODE>\paragraph</CODE>
<DT><CODE></CODE>
<DD><CODE>@E</CODE> <CODE>\subparagraph</CODE>
</UL>
<P>
If the <CODE>+chapter</CODE> parameter is passed to the <CODE>:fwTex</CODE> derivation,
however, the translation is:
<P>
<UL>
<DT><CODE></CODE>
<DD><CODE>@A</CODE> <CODE>\chapter</CODE>
<DT><CODE></CODE>
<DD><CODE>@B</CODE> <CODE>\section</CODE>
<DT><CODE></CODE>
<DD><CODE>@C</CODE> <CODE>\subsection</CODE>
<DT><CODE></CODE>
<DD><CODE>@D</CODE> <CODE>\subsubsection</CODE>
<DT><CODE></CODE>
<DD><CODE>@E</CODE> <CODE>\paragraph</CODE>
</UL>
<P>
<DT><CODE>@p typesetter = texinfo</CODE>
<DD>When these directive is used, the derivation <CODE>:fwTexinfo</CODE> can be
used to obtain a <TT>`.tnf'</TT>-type file. Since <TT>`.tnf'</TT>-files are
valid TeX-files, all the derivations for <CODE>.tex</CODE>-files are also
valid for <CODE>.tnf</CODE>-files. Additionally, <CODE>.tnf</CODE>-type files can be
converted into info-files which can be shown with the Eli-Info-Browser
by application of the <CODE>:display</CODE>-derivation.
<P>
<DT><CODE>@p typesetter = html</CODE>
<DD>When these directive is used, the derivation <CODE>:fwHtml</CODE> can be used
to obtain a <TT>`.html'</TT>-type file. This file can be extracted from Eli
and can be loaded into your favorite html-browser.
</DL>
<P>
<H2><A NAME="SEC15" HREF="fw_toc.html#SEC15">Structure</A></H2>
<P>
The section directive provides a way for the user to structure the
program and documentation into a hierarchical tree
structure,
<A NAME="IDX43"></A>
just as in most large documents.  A section construct consists of a
case-insensitive identifying letter, which determines the absolute level
of the section in the document, and an optional section name, which has
exactly the same syntax as a macro name.
<P>
<PRE>
<VAR>section</VAR> ::= <SAMP>`@'</SAMP> <VAR>levelchar</VAR> [<VAR>name</VAR>] .

<VAR>levelchar</VAR> ::= <SAMP>`A'</SAMP> / <SAMP>`B'</SAMP> / <SAMP>`C'</SAMP> / <SAMP>`D'</SAMP> / <SAMP>`E'</SAMP> /
                <SAMP>`a'</SAMP> / <SAMP>`b'</SAMP> / <SAMP>`c'</SAMP> / <SAMP>`d'</SAMP> / <SAMP>`e'</SAMP> .

<VAR>name</VAR> ::= <SAMP>`@&#60;'</SAMP> <VAR>name_text</VAR> <SAMP>`@&#62;'</SAMP> .

<VAR>name_text</VAR> ::= {<VAR>ordinary_char</VAR> / <VAR>text_special</VAR>} .
</PRE>
<P>
The section construct is not quite "inline" as it must appear only at
the start of a line.  However, unlike the <CODE>@i</CODE>, <CODE>@p</CODE>, and
<CODE>@t</CODE> constructs, it does not consume the remainder of the line
(although it would be silly to place anything on the same line anyway).
<P>
FunnelWeb provides five levels of sections, ranging from the highest
level of <CODE>A</CODE> to the lowest level of <CODE>E</CODE>.  FunnelWeb input
files need not contain any sections at all, but if they do, the first
section must be at level <CODE>A</CODE>, and following sections must not skip
hierarchical levels (e.g. an <CODE>@D</CODE> cannot follow an <CODE>@B</CODE>).
FunnelWeb generates an error if a level is skipped.
<P>
All section <EM>must</EM> have names associated with them, but for
convenience, the section name is optional if the section contains one or
more macro definitions (ie. at least one macro definition appears
between the section construct in question and the next section construct
in the input file.).  In this case, the section <EM>inherits</EM> the name
of the first macro defined in the section.  This feature streamlines the
input file, avoiding duplicate name inconsistencies.
<P>
Any sequence of printable characters can be used in the section name,
<A NAME="IDX44"></A>
even the target typesetter's escape sequence (eg. in TeX,
<CODE>\</CODE>).
<P>
The following example demonstrates the section construct.
<P>
<PRE>
@A@&#60;Life Simulation@&#62;

This is the main simulation module for planet earth, simulated
down to the molecular level.  This is a REALLY big program.  I
mean really big.  I mean, if you thought the X-Windows source
code was big, you're in for a shock...

@B We start by looking at the code for six legged stick
insects as they form a good example of a typical
object-oriented animal implementation.

@$@&#60;Six Legged Stick Insects@&#62;@{@-
slsi.creep; slsi.crawl; slsi.creep;@}
</PRE>
<P>
In the above example, the name for the level A section is provided
explicitly, while the name for the level B section will be inherited
from the macro name.
<P>
<H2><A NAME="SEC16" HREF="fw_toc.html#SEC16">Marking Text</A></H2>
<P>
<H3><A NAME="SEC17" HREF="fw_toc.html#SEC17">Typesetting a literal string</A></H3>
<P>
Experience has shown that one of the most common typesetting
requirements is that of being able to typeset small program fragments in
the middle of the documenting free text.  Typically there is a frequent
need to refer to program identifiers, and it assists the reader to have
such identifiers typeset in the same manner as the program text in the
macro definition.
<P>
To specify that some text be typeset in <CODE>tt font</CODE>, enclose the text
in curly brace special sequences as follows.
<P>
<PRE>
<VAR>literal</VAR> ::= <SAMP>`@{'</SAMP> <VAR>ordinary_text</VAR> <SAMP>`@}'</SAMP> .
</PRE>
<P>
As in macro names, section names, and macro bodies, the text contained
within the literal construct is protected by FunnelWeb from any
non-literal interpretation by the typesetter and the user is free to
enclose <EM>any</EM> text covered by the definition <VAR>ordinary_text</VAR>.
FunnelWeb guarantees that, no matter what the text is, it will be
typeset in <CODE>tt font</CODE> exactly as it appears.  However, the text will
be filled and justified into a paragraph as usual.
<P>
Here is an example of the use of the construct:
<P>
<PRE>
@C The @{WOMBAT@} (Waste Of Money, Brains, And Time)
function calls the @{kangaroo@} input function which has
been known to cause keybounce.  This keybounce can be
dampened using the @{wet_sloth@} subsystem.
</PRE>
<P>
<H3><A NAME="SEC18" HREF="fw_toc.html#SEC18">Emphasising a string</A></H3>
<P>
The emphasis directive is very similar to the literal directive except
that it causes its argument to be typeset in an emphasised manner (eg.
italics).  Like the literal directive, the emphasis directive protects
its text argument.
<P>
<PRE>
<VAR>emphasise</VAR> ::= <SAMP>`@/'</SAMP> <VAR>ordinary_text</VAR> <SAMP>`@/'</SAMP> .
</PRE>
<P>
Example:
<P>
<PRE>
@C What you @/really@/ need, of course, is a @/great@/,
@/big@/, network with packets just flying
@/everywhere@/.  This section implements an interface to
such a @/humungeous@/ network.
</PRE>
<P>
<H2><A NAME="SEC19" HREF="fw_toc.html#SEC19">Formatting</A></H2>
<P>
<H3><A NAME="SEC20" HREF="fw_toc.html#SEC20">Forcing a Pagebreak</A></H3>
<P>
The new page pragma is a typesetting pragma with the following syntax.
<P>
<PRE>
<VAR>ftd_newpage</VAR> ::= <SAMP>`@t '</SAMP> <SAMP>`new_page'</SAMP> .
</PRE>
<P>
Its only form looks like this.
<P>
<PRE>
@t new_page
</PRE>
<P>
Its sole effect is to cause a "skip to a new page" command to be
inserted into the documentation file.  The new page command is such that
if the typesetter is already at the top of a page, it will skip to the
top of the next page.
<P>
<H3><A NAME="SEC21" HREF="fw_toc.html#SEC21">Producing a table of contents</A></H3>
<P>
The table of contents pragma is a typesetting pragma with the following
syntax.
<P>
<PRE>
<VAR>ftd_toc</VAR> ::= <SAMP>`@t '</SAMP> <SAMP>`table_of_contents'</SAMP> .
</PRE>
<P>
Its only form looks like this.
<P>
<PRE>
@t table_of_contents
</PRE>
<P>
Its sole effect is to instruct FunnelWeb to insert a table of contents at
this point in the printed documentation.  This pragma does not skip to the
top of a new page first.
<P>
<H3><A NAME="SEC22" HREF="fw_toc.html#SEC22">Inserting blank vertical space</A></H3>
<A NAME="IDX45"></A>
<P>
The vertical skip pragma is a typesetting pragma that instructs Weave to
insert a specified amount of vertical space into the documentation.  The
pragma has the following syntax.
<P>
<PRE>
<VAR>ftd_vskip</VAR> ::= <SAMP>`@t '</SAMP> <SAMP>`vskip'</SAMP> <SAMP>` '</SAMP> <VAR>number</VAR> <SAMP>` mm'</SAMP>.
</PRE>
<P>
For example:
<P>
<PRE>
@t vskip 26 mm
</PRE>
<P>
<H3><A NAME="SEC23" HREF="fw_toc.html#SEC23">Specifying the title of your document</A></H3>
<P>
The title pragma is a typesetting pragma with the following syntax.
<P>
<PRE>
<VAR>ftd_title</VAR> ::= <VAR>ts</VAR> <SAMP>`title'</SAMP> <VAR>s</VAR> <VAR>font</VAR> <VAR>s</VAR> <VAR>alignment</VAR> <VAR>text</VAR> .

<VAR>font</VAR> ::= <SAMP>`normalfont'</SAMP> / <SAMP>`titlefont'</SAMP> / <SAMP>`smalltitlefont'</SAMP> .

<VAR>alignment</VAR> ::= <SAMP>`left'</SAMP> / <SAMP>`centre'</SAMP> / <SAMP>`right'</SAMP> .

<VAR>text</VAR> ::= <SAMP>`"'</SAMP> {<VAR>printable_char</VAR>} <SAMP>`"'</SAMP> .
</PRE>
<P>
Its effect is to instruct Weave to insert a single line into the printed
documentation containing the specified text set in the specified font
and aligned in the specified manner.  The double quotes delimiting the
text are for show only; if you want to put a double quote in the string,
you don't need to double them.
<P>
Here is an example of the pragma.
<P>
<PRE>
@t title smalltitlefont centre "How to Flip a Bit"
</PRE>
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_2.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_4.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
